//package sunflower.config.datasource;
//
//import com.zaxxer.hikari.HikariConfig;
//import com.zaxxer.hikari.HikariDataSource;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
//import org.springframework.boot.context.properties.EnableConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
//import org.springframework.jdbc.datasource.lookup.DataSourceLookup;
//
//import javax.sql.DataSource;
//import java.sql.Connection;
//import java.sql.SQLException;
//import java.util.Map;
//
///**
// * @description:
// * @author: TanJingyu
// * @create: 2021-09-30 17:54
// **/
//@EnableConfigurationProperties(value = DataSourceProperties.class)
//@Configuration(proxyBeanMethods = false)
//public class DatasourceConfiguration {
//    @Autowired
//    private DataSourceProperties properties;
//
//    @Bean
//    public DataSource userDataSource() {
//        DataSource defaultDataSource = mainDataSource();
//        // todo 未完成
//        return new MyRoutingDataSource();
//    }
//
//    private DataSource mainDataSource() {
//        HikariConfig config = new HikariConfig();
//        config.setUsername(properties.getUsername());
//        config.setPassword(properties.getPassword());
//        config.setJdbcUrl(properties.getUrl());
//
//        return new HikariDataSource(config);
//    }
//
//    /**
//     * 以下三个方法为主要需要实现的方法
//     * 其他方法的存在意义也很简单，看源码即可
//     */
//    public static class MyRoutingDataSource extends AbstractRoutingDataSource {
//
//        @Override
//        protected Object determineCurrentLookupKey() {
//            return 3L;
//        }
//
//        @Override
//        public void setTargetDataSources(Map<Object, Object> targetDataSources) {
//            super.setTargetDataSources(targetDataSources);
//        }
//
//        @Override
//        public void setDefaultTargetDataSource(Object defaultTargetDataSource) {
//            super.setDefaultTargetDataSource(defaultTargetDataSource);
//        }
//
//    }
//}
